<template>
    <div>
        <h4>- 扩展运算符 ...语法</h4>
        <code>后面可以放置表达式: ...(x > 0 ? ['a'] : []) ; 只有函数调用时，扩展运算符才可以放在圆括号中</code>
        <p>应用：</p>
        <code>Math.max(...[14, 3, 77]) //找最大值；复制数组：const a2 = [...a1]；合并数组：[...arr1, ...arr2, ...arr3]；//浅拷贝；将字符串转为真正的数组：[...'hello']// [ "h", "e", "l", "l", "o" ]；合并数组：
            任何定义了遍历器（Iterator）接口的对象，都可以用扩展运算符转为真正的数组 含Map 和 Set 结构，Generator 函数
        </code>
        <h4>- Array.from() 将类似数组的对象（array-like object）和可遍历（iterable）的对象（包括 ES6 新增的数据结构 Set 和 Map）转成真正的数组</h4>
        <code>有 length 属性就可以转换：Array.from({ length: 3 }) //[ undefined, undefined, undefined ]；</code>
        <code>接收第二个参数 作用类似于 数组的map方法：Array.from([1, 2, 3], (x) => x * x) //[1, 4, 9]；Array.from({length: 2}, x => x || 0) //[0, 0]；第三个参数用于绑定 this；还可以将字符串变成数组然后返回字符串的长度</code>
        <h4>- Array.of() 将一组值，转换为数组</h4>
        <code>于 Array()的区别：Array(3) //[ , , ]Array只有一个参数时该参数表示数组长度 大于一个才会返回参数组成的数组 而Array.of(3) //[3]总是返回参数值组成的数组</code>
        <h4>- 实例方法：Array.prototype.copyWithin(target, start = 0, end = this.length)将指定位置的成员复制到其他位置并返回当前数组，会修改当前数组</h4>
        <code>[1, 2, 3, 4, 5].copyWithin(0, 3) //[4, 5, 3, 4, 5]</code>
        <h4>- 实例方法：find()找出第一个符合条件的数组成员；findIndex()返回第一个符合条件的数组成员的位置；[NaN].findIndex(y => Object.is(NaN, y)) //0</h4>
        <h4>- 实例方法：fill()使用给定值，填充一个数组；new Array(3).fill(7)//[7, 7, 7]；['a', 'b', 'c'].fill(7, 1, 2) //['a', 7, 'c']</h4>
        <p>- <b>keys()</b>是对键名的遍历、<b>values()</b>是对键值的遍历，<b>entries()</b>是对键值对的遍历 都返回一个遍历器对象可使用for...of遍历结果；<b>includes(n, start=0)</b>某个数组是否包含给定的值；<b>flat(n=1)</b>用于将嵌套的数组“拉平”，变成一维的数组 n为拉平层数 传入Infinity表示不管层数全部拉平，会跳过空位；<b>flatMap()</b>执行map()后再执行flag() 只能展开一层</p>
        <h4>- 数组空位ES6统一处理为undefined 注意flag()会跳过空位：[1, 2, , 4, 5].flat() //[1, 2, 4, 5]</h4>
    </div>
</template>

<script>
export default {
    
}
</script>

<style scoped>

</style>